﻿namespace Hsenl {
    public interface IProcedureState {
        bool IsEntering { get; internal set; }
        bool IsLeaving { get; internal set; }
        void Init(IProcedure fsm);
        HTask Enter(IProcedure fsm, IProcedureState prev);
        void Update(IProcedure fsm, float deltaTime);
        HTask Leave(IProcedure fsm, IProcedureState next);
        void Destroy(IProcedure fsm);
        void SetData(object o);
        T GetData<T>();
    }
}